第 19 课:执行系统 - 从信号到真实成交

如果你把“行情价格”当成“成交价格”,你训练出来的不是交易系统,而是幻觉。


一个常见的致命误会

很多策略回测看起来很美,是因为默认了一个不可能成立的前提:

只要出现信号,我总能在理想价格成交(比如 K 线 Close)。

一旦进入实盘,你会立刻遇到三个现实:滑点、延迟、部分成交/不成交。这些不是“优化项”,而是决定策略能否落地的生死线。

本章将带你深入理解什么是真实成交数据(Real Execution Data),以及为什么它是执行系统(Execution Agent)的地基。


19.1 核心定义

所谓的“真实成交数据”,并不是你从 K 线图上看到的显示价格,而是:

核心逻辑:如果你在那一瞬间真实下达了订单,你最终在什么价格、成交了多少数量、以及经历了多久的延迟。

这是理论回测与实盘交易之间最重要的分水岭。


19.2 真实成交的四大构成要素

要准确模拟真实交易,必须考虑以下四个关键维度:

19.2.1 成交价格(Execution Price)

真实成交价通常与 K 线价格(OHLC)存在显著差异。

  • 差异化:5 分钟 K 线的收盘价(Close)只是最后的一笔成交记录,并不代表你的大额订单能以此价全部成交。
  • 拆分性:在大额交易中,你的订单可能会被拆分成多笔,分别在不同的微小价位上成交,最终呈现一个加权平均价

19.2.2 滑点(Slippage)

滑点是理论成交价与实际成交价之间的偏差。它是量化交易中最主要的隐形成本,主要来源于:

  • 流动性深度:买卖盘口的深度不足以支撑订单量。
  • 市场冲击:你自己的下单行为改变了短期供需,导致价格向不利方向移动。
  • 行情波动:在快速波动的行情中,价格瞬息万变。

19.2.3 成交概率与延迟(Probability & Latency)

在真实市场中,挂单并不意味着一定会成交:

  • 市价单 (Market Order):追求“即时成交”,代价是往往需要承担更大的滑点。
  • 限价单 (Limit Order):追求“价格确定”,但面临以下风险:
    • 完全不成交:价格从未触达。
    • 部分成交:排在你前面的单子太多,轮到你时流动性已耗尽。

19.2.4 摩擦成本与交易规则

除了价格本身,你还必须支付法定的“入场费”:

  • 显性成本:手续费(Commissions)、印花税、过户费。
  • 规则限制:最小变动价位(Tick Size)、涨跌停板限制、特定的撮合规则(如价格优先、时间优先)。

19.3 策略视角:为何高频趋势策略对此极度敏感

对于采用 5 分钟趋势 + 高频交易 逻辑的策略而言,真实成交数据的重要性被放大了数倍。

19.3.1 误差的长期累积效应

如果你每天的交易频率在几十到几百笔之间,意味着哪怕每笔仅有 0.01% 的成交价偏差,在复利和高频的影响下,长期的回测曲线也会发生根本性的扭曲。

19.3.2 “K 线收盘价成交”的幻觉

如果你在训练 AI Agent 或回测时简单使用“K 线 Close 价”作为成交价,模型会学到极其危险的逻辑:

  • 误判:“一根 K 线结束时,我总能在收盘价瞬间成交。”
  • 错觉:“价格突破后,我总能以最优的突破价买入。”

现实逻辑:在现实中,你在当前 K 线结束观察到信号后,最快也只能在 下一根 K 线 的起始处下单。在行情剧烈波动时,你几乎永远无法以观察到的 Close 价成交。


19.4 典型陷阱:缺乏真实数据导致的实战脱节

当系统性地高估信号质量时,策略(特别是强化学习 RL 模型)会产生一系列致命的偏差:

19.4.1 偏好“不可实现”的入场时机

Agent 会演化出一种对“刚好收盘突破”信号的病态偏好。在模拟世界中,突破点是完美的入场价;但在现实中,由于下一根 K 线往往伴随跳空(Gap)或剧烈滑点,Agent 学会的是一种现实世界永远买不到的好时机

19.4.2 沦为“手续费收割机”

在无滑点和低摩擦的假设下,AI 会认为“多做一笔 = 多赚一笔”,从而疯狂提高交易频率。然而在实盘中,高频交易往往是成本放大器,最终导致线上表现与模拟结果完全脱钩。

19.4.3 错误的因果推断

最危险的情况是 RL 学到了错误的因果关系。例如:

  • 错误推论:“当指标达到阈值且刚收盘时买入,必然盈利。”
  • 真实因果:这仅仅是一个被理想化成交假设放大的统计假象,而非真正的市场获利逻辑。

19.5 数据双维度:市场级环境 vs. 策略执行表现

要获取真实的成交数据,首先需要明确你到底需要哪一类数据。通常,我们可以将其分为两个维度:

  • 维度 A:市场真实成交环境数据(公共环境):这类数据回答的是“如果在当时那个市场环境下下单,一般会发生什么?”
  • 维度 B:策略在真实市场中的成交数据(私有表现):这类数据回答的是“当我的 Agent 在真实市场中下单时,具体发生了什么?”

核心策略:如果你要训练“执行型”或“在线 RL Agent”,最终目标一定是获取维度 B 数据。维度 A 仅能作为前期算法开发和冷启动阶段的近似。


19.6 标准化数据模型

19.6.1 为什么需要内部统一格式

当你对接多个券商或交易所时,会立即遇到一个问题:每家使用不同的符号体系

同一只苹果公司股票:
- Interactive Brokers: AAPL (SMART)
- Alpaca: AAPL
- 港股腾讯: 0700 (IBKR) vs 00700 (港交所)
- A股贵州茅台: 600519 (Wind) vs 600519.SH (通达信)

如果你的系统内部直接使用券商原始符号,一旦切换执行通道或增加新市场,整个信号链路都要改。

19.6.2 Canonical Symbol 设计

核心原则:系统内部使用统一的 SYMBOL.EXCHANGE 格式,在边界处做转换。

内部标准格式:
  AAPL.NASDAQ     苹果
  0700.HKEX       腾讯
  600519.SSE      贵州茅台

每个交易通道实现一个 Normalizer:
  IBNormalizer:     AAPL.NASDAQ  AAPL (SMART)
  AlpacaNormalizer: AAPL.NASDAQ  AAPL
  FutuNormalizer:   0700.HKEX    00700.HK

这种设计让核心策略逻辑与具体券商完全解耦。增加新的执行通道时,只需实现一个新的 Normalizer,不需要修改任何策略代码。

19.6.3 符号解析陷阱

看似简单的"股票代码",在生产环境中充满意外。

陷阱说明后果
退市股票已退市代码查询不报错,返回空数据或旧数据信号基于幽灵数据生成
公司行为拆股/合股改变代码(如 Google: GOOG→GOOGL)历史数据不连续
多段代码BRK.B、BF.B 等含点号的代码与分隔符冲突解析错误
陈旧报价盘后/休市期间 API 返回过期价格用昨天的价格下今天的单
代码复用退市代码被新公司复用回测中张冠李戴

防御措施:对每个标的维护一个 instrument_registry,包含上市日期、退市日期、公司行为历史、交易时段等元数据。信号生成前先验证标的状态。


19.7 获取途径:如何获取高保真交易数据?

19.7.1 数据源的层次

Yahoo Finance 够用来学习,但不够用来赚钱。

不同阶段对数据的要求截然不同:

阶段数据源精度成本
学习/回测Yahoo Finance、免费 API日线 OHLCV免费
策略开发Polygon.io(现已更名为 Massive)、Alpha Vantage分钟线 + 基本 L1$29-199/月
生产交易Databento、交易所直连实时 L1/L2、逐笔成交$500+/月

Yahoo Finance 提供的日线数据足以完成本课程的所有练习和回测。但一旦进入生产环境,你需要机构级数据源(如 Databento、交易所直接数据馈送)来获取实时 Level-1/Level-2 行情。数据精度的差异直接决定了滑点估算和成交模拟的准确性。

19.7.2 第一类:可购买或通过接口获取的「市场级数据」

这类数据是"市场事实",反映了当时市场的整体流动性。

  1. Level-2 / Order Book 数据(最为关键):
    • 内容:包含每一档买卖盘的价格与数量、毫秒级逐笔成交(Tick/Trade)记录。
    • 用途:用于估算市价单的平均滑点、限价单的成交概率以及构建成交模拟器(Execution Simulator)
    • 来源:交易所官方(最权威但昂贵)、专业数据商(如 Refinitiv)、或部分高级券商 API。
  2. 逐笔成交数据(Tick Data)
    • 虽然看不到盘口排队情况,但能看到每一笔真实的成交价格和成交量,精准度远高于 K 线。
  3. 模拟交易环境(Paper Trading)
    • 警告:多数模拟交易环境的滑点过于理想,且不考虑你的订单对市场的冲击。它只能作为过渡,不可过度依赖。

19.7.3 第二类:必须"由你亲自产生"的真实成交数据

这是唯一能真实反映“你的 Agent + 市场”互动的数据,包含了订单的完整生命周期:

  • 全量日志:下单时间、订单类型、期望价、实际成交价(可能多笔)、成交延迟、部分成交/未成交记录、手续费等。

19.8 残酷真相:为什么核心数据无法通过购买获得?

很多开发者会问:“我能不能不实际交易,直接买到这种带滑点的真实数据?”

核心逻辑:答案是否定的。

原因在于:滑点并不是单纯的市场属性,而是“你的行为 + 市场反馈”的共同产物。 你的下单方式(市价/限价)、订单大小、下单时机,都会在盘口产生不同的化学反应。不存在一个“通用的、替你成交过的”真实数据集。


19.9 进化路线:从模拟器到实盘反馈的三个阶段

对于追求实战效果的开发者,推荐遵循以下工程路线:

  1. 阶段 1:构建执行模拟器
    • 利用 Level-2/Tick 数据构建一个“偏保守”的模拟器。
    • 目标:淘汰 80% 在理想假设下盈利、但在保守假设下亏损的策略。
  2. 阶段 2:小资金真实交易(冷启动)
    • 以极小仓位进入实盘,不为赚钱,只为采集全量日志。
    • 目标:拿到真实的成交失败、极端滑点和延迟样本。
  3. 阶段 3:数据闭环校正
    • 用实盘产生的 B 类数据反向校验阶段 1 的模拟器,使模拟环境越来越接近你的真实执行表现。

19.10 实战建议:针对 5 分钟高频策略的现实方案

结合 5 分钟趋势策略的特性,我给出的最现实建议如下:

  • 宁愿高估风险:在构建模型时,宁愿高估滑点,低估成交概率。
  • RL 训练分离:初期让 RL Agent 先学习“执行逻辑”(例如:下多大、是否追价、何时放弃),而不是急于学习“预测方向”。
  • 尽早入场:一旦策略在“保守模拟器”中表现稳定,应尽早启动小资金实盘。

19.11 总结

显示价 + 滑点 + 概率延迟 + 交易摩擦 = 真实成交数据

只有将这些细节全部纳入考量,避开“理想化成交”的陷阱,量化策略(尤其是 AI 驱动的策略)的回测结果才具备真正的实战参考价值。从“行情数据”向“成交数据”的跨越,是专业量化交易者的必经之路。


19.12 执行通道选择

对于中小规模量化基金,Interactive Brokers (IB) 是事实上的标准选择。

维度Interactive BrokersAlpaca直连交易所
市场覆盖美股 + 港股 + 期货 + 外汇仅美股单一市场
执行算法原生 TWAP/VWAP/自适应基础市价/限价完全自定义
TCA 数据提供到达价格对比有限需自建
API 成熟度TWS API(成熟但复杂)REST API(简单友好)FIX 协议
适合阶段生产交易学习/原型验证大规模专业团队

Alpaca 和模拟盘是很好的学习工具和原型验证平台,但它们不是生产终点。当你准备投入真实资金时,IB 的多市场覆盖、原生算法交易和真实 TCA 数据是中小团队最务实的选择。


19.13 多智能体视角

  • Execution Agent:把"信号"翻译成可成交的订单(拆单/挂单/追价/撤单),并持续度量执行质量(滑点、成交率、延迟)。
  • Risk Agent:把"能成交"变成"值得成交",对高滑点/低流动性/异常延迟触发降仓或拒单。
  • Data/Telemetry Agent:沉淀执行数据闭环(订单→成交→成本→PnL),为后续的回放、归因、在线学习提供素材。

本课交付物

完成本课后,你将获得:

  1. 执行系统的关键概念框架:成交价、滑点、延迟、成交率、摩擦成本
  2. 数据闭环的采集清单:知道实盘必须记录什么,才能反哺执行与 RL
  3. 一条可落地的演进路径:保守模拟器 → 小资金实盘采样 → 反向校准模拟器

本课要点回顾

  • 真实成交数据 = 成交价 + 滑点 + 概率/延迟 + 交易规则/摩擦成本
  • 用 K 线 Close 当成交价会系统性高估策略可实现性
  • A 类数据(市场环境)只能近似,B 类数据(你的实盘日志)才可用于校准与进化

延伸阅读

  • 背景知识:交易所与订单簿机制 - 理解限价单/市价单的真实撮合语义
  • 背景知识:执行模拟器实现 - 4 级执行模拟器的代码实现
  • 背景知识:Tick 级回测框架 - 事件驱动回测与队列位置模拟
  • FIX 协议入门 - FIX 4.4 消息结构与 QuickFIX 实现
  • 附录 A:实盘交易记录标准指南 - 你应该记录哪些字段来形成闭环

下一课预告

第 20 课:生产运维

当系统跑进真实市场,问题不再是“策略对不对”,而是“系统有没有在正确运行”:数据管道健康吗?PnL 是否异常?回撤是否触发熔断?下一课我们把这套系统真正“养起来”。

Cite this chapter
Zhang, Wayland (2026). 第19课:执行系统 - 从信号到真实成交. In AI Quantitative Trading: From Zero to One. https://waylandz.com/quant-book/第19课:执行系统 - 从信号到真实成交
@incollection{zhang2026quant_第19课:执行系统 _ 从信号到真实成交,
  author = {Zhang, Wayland},
  title = {第19课:执行系统 - 从信号到真实成交},
  booktitle = {AI Quantitative Trading: From Zero to One},
  year = {2026},
  url = {https://waylandz.com/quant-book/第19课:执行系统 - 从信号到真实成交}
}